﻿#region using
using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Activation;

using ibba.src.norisk.BusinessLogic;
using ibba.src.norisk.Contracts;
#endregion

/*****************************************************************************************************************          
 ParesIndexadores :
            
 Histórico de Alterações:      
  -> 07/05/2013 - Amadeu Boldrin - Criacao - ST568862
 *****************************************************************************************************************/

namespace ibba.src.norisk.ServiceImplementation
{
    [AspNetCompatibilityRequirements(RequirementsMode = System.ServiceModel.Activation.AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]

    class ParesIndexadores : IParesIndexadores
    {
        private ParesIndexadoresBL _paresIndexadoresBL;

        public ParesIndexadores()
        {
            try
            {
                _paresIndexadoresBL = new ParesIndexadoresBL();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
        }

        //RETORNA UMA LISTA DE CONTRATOS DE PARES DE INDEXADORES
        public List<ibba.src.norisk.Contracts.ParesIndexadores> ObterParesIndexadores()
        {
            List<ibba.src.norisk.Contracts.ParesIndexadores> retorno = null;

            try
            {

                retorno = TranslateParesIndexadores.Translate(_paresIndexadoresBL.ObterParesIndexadores());
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }


        //RETORNA UMA LISTA DE CONTRATOS DE PARES DE INDEXADORES DE ACORDO COM O PARAMETRO PASSADO
        public List<ibba.src.norisk.Contracts.ParesIndexadores> ObterParesIndexadoresPorParametro(Contracts.ParametroParesIndexadores pParametro)
        {
            List<ibba.src.norisk.Contracts.ParesIndexadores> retorno = null;

            //faz o translate do paramatro passado para business
            BusinessEntities.ParametroParesIndexadores paramB = TranslateParesIndexadores.TranslateParametro(pParametro);

            //Cria uma lista 'Business' que vai receber os pares
            List<BusinessEntities.ParesIndexadores> paresB = new List<BusinessEntities.ParesIndexadores>();

            try
            {
                //consulta em business os pares de indexadores de acordo com o parametro
                paresB = _paresIndexadoresBL.ObterParesIndexadoresPorParametro(paramB);

                //converte para Contracts o retorno
                retorno = TranslateParesIndexadores.Translate(paresB);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }

        public List<Contracts.ParametroParesIndexadores> ObterParametrosPorEntidade(int pIdEntidade)
        {
            List<Contracts.ParametroParesIndexadores> retorno = null;

            List<BusinessEntities.ParametroParesIndexadores> paramB = new List<BusinessEntities.ParametroParesIndexadores>();

            try
            {
                paramB = _paresIndexadoresBL.ObterParametros(pIdEntidade);

                retorno = TranslateParesIndexadores.TranslateParametro(paramB);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }


        public List<Contracts.ParametroParesIndexadores> ObterParametros()
        {
            List<Contracts.ParametroParesIndexadores> retorno = null;

            List<BusinessEntities.ParametroParesIndexadores> paramB = new List<BusinessEntities.ParametroParesIndexadores>();

            try
            {
                paramB = _paresIndexadoresBL.ObterParametros();

                retorno = TranslateParesIndexadores.TranslateParametro(paramB);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }


        public List<string> ObterIndexadores()
        {
            List<string> retorno = null;

            try
            {

                retorno = _paresIndexadoresBL.ObterIndexadores();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }


        public int InserirParIndexador(Contracts.ParesIndexadores pParIndexador, string pUser)
        {
            int retorno = 0;

            try
            {
                retorno = _paresIndexadoresBL.InserirParIndexador(TranslateParesIndexadores.Translate(pParIndexador),pUser);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return retorno;
        }


        public void ExcluirParIndexador(Contracts.ParesIndexadores pParIndexador, string pUser)
        {
            try
            {
                _paresIndexadoresBL.ExcluirParIndexador(TranslateParesIndexadores.Translate(pParIndexador),pUser);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
        }

    }
}
